package com.shengruan.common;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class Mail {

	String to = "";//
	String from = "";//
	String host = "";//
	String username = "" ;
	String password = "" ;
	String filename = "";//
	String subject = "";//
	String content = "";//
	Vector<String> file = new Vector<String>();//

	public Mail(){
	}

	public Mail(String to,String from,String smtpServer,String username,String password,String subject,String content){
		this.to = to;
		this.from = from;
		this.host = smtpServer;
		this.username = username;
		this.password = password;
		this.subject = subject;
		this.content = content;
	}



	public void setHost(String host){
		this.host = host;
	}



	public void setPassWord(String pwd){
		this.password = pwd;
	}



	public void setUserName(String usn){
		this.username = usn;
	}


	public void setTo(String to){
		this.to = to;
	}


	public void setFrom(String from){
		this.from = from;
	}

	public void setSubject(String subject){
		this.subject = subject;
	}


	public void setContent(String content){
		this.content = content;
	}


	public String transferChinese(String strText){
		try{
			strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B");
		}catch(Exception e){
			e.printStackTrace();
		}
		return strText;
	}


	public void attachfile(String fname){
		file.addElement(fname);
	}

	@SuppressWarnings("unchecked")
	public boolean sendMail(){


		Properties props = System.getProperties();
		props.put("mail.smtp.host",host);
		props.put("mail.smtp.auth","true");
		Session session=Session.getDefaultInstance(props, new Authenticator(){
			public PasswordAuthentication getPasswordAuthentication(){
				return new PasswordAuthentication(username,password); 
			}
		});

		try {


			MimeMessage msg = new MimeMessage(session);
			msg.setFrom(new InternetAddress(from));
			InternetAddress[] address={new InternetAddress(to)};
			msg.setRecipients(Message.RecipientType.TO,address);
			msg.setSubject(subject);
			Multipart mp = new MimeMultipart();
			MimeBodyPart mbpContent = new MimeBodyPart();
			mbpContent.setContent(content, "text/html;charset=GB2312");
			mp.addBodyPart(mbpContent);

			Enumeration efile=file.elements();
			while(efile.hasMoreElements()){

				MimeBodyPart mbpFile = new MimeBodyPart();
				filename=efile.nextElement().toString();
				FileDataSource fds = new FileDataSource(filename);
				mbpFile.setDataHandler(new DataHandler(fds));
				mbpFile.setFileName(fds.getName());
				mp.addBodyPart(mbpFile);



			}

			file.removeAllElements();
			msg.setContent(mp);
			msg.setSentDate(new Date());

			Transport.send(msg);

		} catch (MessagingException mex) {
			mex.printStackTrace();
			return false;
		}
		return true;
	}

}//end
